#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

//int my_mul(int x, int y)
//{
//    if (y == 0)
//    {
//        return 0;
//    }
//    return x + my_mul(x, y - 1);
//}
//int multiply(int A, int B) {
//    if (A < B)
//    {
//        int tmp = A;
//        A = B;
//        B = tmp;
//    }
//    return my_mul(A, B);
//}
//
//int main()
//{
//    multiply(918795921, 1);
//    return 0;
//}


//int judge(int i)
//{
//    if (i % 7 == 0)
//    {
//        return 1;
//    }
//    while (i)
//    {
//        if (i % 10 == 7)
//        {
//            return 1;
//        }
//        i /= 10;
//    }
//    return 0;
//}
//
//int main() {
//    int n = 0;
//    scanf("%d", &n);
//    int count = 0;
//    for (int i = 1; i < n; i++)
//    {
//        if (judge(i))
//        {
//            printf("%d ", i);
//        }
//    }
//    printf("%d ", count);
//    return 0;
//}

typedef struct num
{
    int i;
    int j;
    int data;
}num;
int main()
{
    int n = 0;
    scanf("%d", &n);
    num* arr[100] = { 0 };
    int x, y, val;
    int z = 0;
    while (1)
    {
        scanf("%d%d%d", &x, &y, &val);
        if (x == 0 && val == 0 && y == 0)
        {
            break;
        }
        arr[z] = malloc(sizeof(num));
        arr[z]->i = x;
        arr[z]->j = y;
        arr[z]->data = val;
        z++;
    }
    int sum = 0;
    int max = 0;
    for (int j = 0; j < n; j++)
    {
        sum = 0;
        for (int i = 0; i < z; i++)
        {
            if (arr[i]->i == j)
            {
                sum += arr[i]->data;
            }
        }
        if (max < sum)
        {
            max = sum;
        }
    }
    for (int j = 0; j < n; j++)
    {
        sum = 0;
        for (int i = 0; i < z; i++)
        {
            if (arr[i]->j == j)
            {
                sum += arr[i]->data;
            }
        }
        if (max < sum)
        {
            max = sum;
        }
    }
    printf("%d ", max);
    return 0;
}